import {defineStore} from 'pinia' //引入pinia
import {login as loginApi} from '@/api/index.js'
import router from '@/router'
import {setTokenTime} from '@/utils/auth.js'
//这里官网是单独导出  是可以写成默认导出的  官方的解释为大家一起约定仓库用use打头的单词 固定统一小仓库的名字不易混乱
export const user = defineStore("test", {
  state: () => {
    return ({
      // 定义Token
      token:localStorage.getItem('token')||'',
      // 定义收缩导航的状态
      siderType:true,
      lang:localStorage.getItem('lang') || 'zh'
    })
  },
  actions:{
    // 登录页面
    login(userInfo){
      return new Promise((resolve,reject) =>{
        loginApi(userInfo).then(res => {
          // 将token存储在pinia中
          this.token=res.data.token
          // 将token存储在localStorage中
          localStorage.setItem('token', res.data.token)
          // 记录登录的时间
          setTokenTime()
          // 路由的跳转
          router.replace('/')
          resolve()
        }).catch((err) => {
          reject(err)
        })
      })
    },
    //token过期后执行置空token，进行登录页面的跳转
    logout(){
      this.token = ''
      localStorage.setItem('token','')
      // 清除localStorag
      localStorage.clear()
      router.replace('/login')
    },
    // 左侧菜单栏的收缩的状态值
    changeSiderType(){
      this.siderType = !this.siderType
    },
    // 当前语言的状态
    changeLang(val){
      this.lang = val
    }
  }
})